using System;
using System.Collections.Generic;
using Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos;
using Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Entidades;

namespace Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.ServiceImplementation.Translator
{
    /// <summary>
    /// Realiza traducao entre contrato "Produto" e entidade "Produto".
    /// </summary>
    public class TradutorProduto
    {
        /// <summary>
        /// Converte entidade "Produto" em contrato "Produto".
        /// </summary>
        public Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto Traduzir(Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Entidades.Produto origem)
        {
            Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto destino = new Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto();
            destino.Codigo = origem.Codigo;
            destino.Nome = origem.Nome;
            destino.CodigoPai = origem.CodigoPai;
            return destino;
        }

        /// <summary>
        /// Converte entidade "Produto" em contrato "Produto".
        /// </summary>
        public List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto> Traduzir(List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Entidades.Produto> origem)
        {
            List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto> destino = new List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto>();
            for (int idx = 0; idx < origem.Count; idx++)
            {
                destino.Add(Traduzir(origem[idx]));
            }

            return destino;
        }

        /// <summary>
        /// Converte contrato "Produto" em entidade "Produto".
        /// </summary>
        public Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Entidades.Produto Traduzir(Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto origem)
        {
            Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Entidades.Produto destino = new Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Entidades.Produto();
            destino.Codigo = origem.Codigo;
            destino.Nome = origem.Nome;
            destino.CodigoPai = origem.CodigoPai;
            return destino;
        }

        /// <summary>
        /// Converte contrato "Produto" em entidade "Produto".
        /// </summary>
        public List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Entidades.Produto> Traduzir(List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Servicos.Contratos.Produto> origem)
        {
            List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Entidades.Produto> destino = new List<Bovespa.Sinacor.Servico.BaseConhecimento.Produto.Entidades.Produto>();
            for (int idx = 0; idx < origem.Count; idx++)
            {
                destino.Add(Traduzir(origem[idx]));
            }

            return destino;
        }
    }
}

